package com.fitso.model.service.food.journal;

import org.joda.time.DateTime;
import org.joda.time.LocalDate;

import com.fitso.model.bean.User;
import com.fitso.model.bean.journal.FoodJournal;

/**
 * Interface for implementation wishing to provide any type of
 * {@link FoodJournal} funcationality.
 * 
 * @author timothystorm
 */
public interface FoodJournalService {
	/**
	 * Fetches a single {@link FoodJournal} for the provided {@link User} and
	 * {@link LocalDate}
	 * 
	 * @param user
	 * @param date
	 * @return
	 */
	FoodJournal fetch(User user, DateTime date);

	/**
	 * Deletes a single {@link FoodJournal}
	 * 
	 * @param foodJournal
	 */
	void delete(FoodJournal foodJournal);

	/**
	 * Edits a single {@link FoodJournal}
	 * 
	 * @param foodJournal
	 */
	void edit(FoodJournal foodJournal);

	/**
	 * Saves a single {@link FoodJournal}
	 * 
	 * @param foodJournal
	 */
	void save(FoodJournal foodJournal);
}
